48 research outputs found

    MDA-Based Reverse Engineering

    Get PDF

    Especificación de Componentes MDA para Patrones de Diseño

    Get PDF
    The Model Driven Architecture (MDA) promotes the use of models and model transformations for developing software systems. The idea behind MDA is to manage the evolution from Platform Independent Models to Platform Specific Models that can be used to generate executable components and applications. The concepts of metamodels and metamodel-based model transformations are critical in MDA. In this paper, we analyze how to specify reusable components for design patterns in a way that fit MDA very closely. To define families of reusable components we describe a “megamodel” that refers to metamodels and model transformations organized into an architectural framework. We propose an integration of formal and semiformal specifications to specify MDA mega-components. Our formalization focuses on interoperability of formal languages in Model Driven Development (MDD).La Arquitectura Model Driven (MDA) promueve el uso de modelos y transformaciones de modelos para desarrollar sistemas de software. La idea central de MDA es manejar la evolución de modelos independientes de la plataforma a modelos específicos a la plataforma que pueden ser usados para generar componentes ejecutables y aplicaciones. En el contexto MDA los metamodelos y las transformaciones basadas en metamodelos son esenciales. En este artículo describimos como especificar componentes para patrones de diseño alineados a MDA. Para definir familias de componentes reusables presentamos un “megamodelo” que integra metamodelos y refinamientos organizados en un framework arquitectural. Proponemos integrar especificaciones semiformales y formales para especificar mega-componentes MDA. Nuestra formalización se centra en la interoperabilidad de lenguajes formales en el desarrollo Model Driven (MDD)

    Modernizing science&engineering software systems

    Get PDF
    As the demands for modernized legacy systems rise, so does the need for frameworks for information integration and tool interoperability. The Object Management Group (OMG) has adopted the Model Driven Architecture (MDA), which is an evolving conceptual architecture that aligns with this demand. MDA could help solve coupling problems of multidisciplinary character in science and engineering that consist of one or more applications, supported by one or more platforms. The objective of this paper is to describe rigorous techniques to control the evolution from science & engineering software legacy systems to MDA technologies. We propose a rigorous framework to reverse engineering code in the context of MDA. Considering that validation, verification and consistency are crucial activities in the modernization of systems that are critical to safety, security and economic profits, our approach emphasizes the integration of MDA with formal methods

    Migrating C/C++ Software to Mobile Platforms in the ADM Context

    Get PDF
    Software technology is constantly evolving and therefore the development of applications requires adapting software components and applications in order to be aligned to new paradigms such as Pervasive Computing, Cloud Computing and Internet of Things. In particular, many desktop software components need to be migrated to mobile technologies. This migration faces many challenges due to the proliferation of different mobile platforms. Developers usually make applications tailored for each type of device expending time and effort. As a result, new programming languages are emerging to integrate the native behaviors of the different platforms targeted in development projects. In this direction, the Haxe language allows writing mobile applications that target all major mobile platforms. Novel technical frameworks for information integration and tool interoperability such as Architecture-Driven Modernization (ADM) proposed by the Object Management Group (OMG) can help to manage a huge diversity of mobile technologies. The Architecture-Driven Modernization Task Force (ADMTF) was formed to create specifications and promote industry consensus on the modernization of existing applications. In this work, we propose a migration process from C/C++ software to different mobile platforms that integrates ADM standards with Haxe. We exemplify the different steps of the process with a simple case study, the migration of “the Set of Mandelbrot” C++ application. The proposal was validated in Eclipse Modeling Framework considering that some of its tools and run-time environments are aligned with ADM standards

    Science & engineering software migration: moving from desktop to mobile applications

    Get PDF
    The proliferation of mobile devices over the last years provides opportunities and challenges for solving problems in science and engineering. Among other novel features, mobile devices contain global positioning sensors, wireless connectivity, built-in web browsers and photo/video/voice capabilities that allow providing highly localized, context aware applications. Mobile phones have become as powerful as any desktop computer in terms of applications they can run. However, the software development in mobile computing is still not as mature as it is for desktop computer and the whole potential of mobile devices is wasted [7, 8]

    Migrating software to mobile technology: a model driven engineering approach

    Get PDF
    Nowadays, organizations are facing the problematic of having to modernize or replace their legacy software. This software has involved the investment of money, time and other resources through the ages and there is a high risk in replacing it. The purpose of reengineering is to adapt software in a disciplined way in order to improve its quality in aspects such as operability, functionality or performance. The focus of reengineering is on improving an existing system with a higher return on investment than would be achieved by developing a new system. In the context of reengineering, the term legacy was associated with software that survived several generations of developers, administrators and users. The entry into the market of new technologies or paradigms is increasingly occurring and, motivates the growing demand for the adaptation of systems developed more recently. Mobile Computing is crucial to harvesting the potential of these new paradigms. Smartphones are the most used computing platform worldwide. They come with a variety of sensors (GPS, accelerometer, digital compass, microphone and camera) enabling a wide range of applications in Pervasive Computing, Cloud Computing and Internet of Things (IoT)

    Recovering Sequence Diagrams from Object-oriented Code

    Get PDF
    Software modernization is a current research area in the software industry intended to transform an existing software system to a new one satisfying new demands. The initiative Architecture-Driven Modernization (ADM) helps software developers in tackling reverse engineering, software evolution and, software modernization in general. To support modernization problems, the ADM Task Force has defined a set of metamodels such as KDM (Knowledge Discovery Metamodel), being the Eclipse-MDT MoDisco project the official support for software modernization. We propose the application of ADM principles to provide relevant model-based views on legacy systems. We describe a framework to reverse engineering models from object-oriented code. In this context, we show how to recover UML sequence diagrams from Java code. We validate our approach by using ADM standards and MoDisco platform. Our research can be considered a contribution to the MoDisco community; MoDisco does not support reverse engineering of sequence diagrams and, on the other hand, the MoDisco KDM Discover was used and enriched to obtain the required information for recovering interaction diagrams

    Science & engineering software migration: moving from desktop to mobile applications

    Get PDF
    The proliferation of mobile devices over the last years provides opportunities and challenges for solving problems in Science & Engineering. Among other novel features, mobile devices contain global positioning sensors, wireless connectivity, built-in web browsers and photo/video/voice capabilities that allow providing highly localized, context aware applications. Mobile phones have become as powerful as any desktop computer in terms of applications they can run. However, the software development in mobile computing is still not as mature as it is for desktop computer and the whole potential of mobile devices is wasted. A current problem in the engineering community is the adaptation of desktop applications for mobile technologies. To take advantage of new platform technologies, existing software must evolve. A number of solutions have been proposed to deal with this problem such as redevelopment, which rewrites existing applications, or migration, which moves the existing system to a more flexible environment while retaining the original system data and functionality. A good solution should be to restore the value of the existing software, extracting knowledge and exploiting investment in order to migrate to new software that incorporates the new technologies. On the one hand, traditional reverse engineering techniques can help in the software migration to mobile applications. They are related to the process of analyzing available software with the objective of extracting information and providing high-level views on the underlying code. On the other hand, to achieve interoperability with multiple platforms the migration needs of technical frameworks for information integration and tool interoperability such as the initiative of the Object Management Group (OMG) called Model Driven Architecture (MDA). The outstanding ideas behind MDA are separating the specification of the system functionality from its implementation on specific platforms and managing the software evolution from abstract models to implementations increasing the degree of automation. The objective of this paper is to describe a reengineering process that allow moving existing desktop applications for solving engineering problems of multidisciplinary character to mobile platforms. Our research aims to simplify the creation of applications for mobile platforms by integrating traditional reverse engineering techniques, such static and dynamic analysis, with MDA. We validated our approach by using the open source application platform Eclipse, EMF (Eclipse Modeling Framework), EMP (Eclipse Modeling Project) and the Android platform

    Refactoring de diagramas de clases UML

    Get PDF
    Se denomina refactoring al proceso de reestructurar software orientado a objetos aplicando una secuencia de transformaciones que preservan la funcionalidad del mismo a fin de mejorar alguna métrica. Es una actividad esencial para controlar la evolución del software facilitando futuras adaptaciones y extensiones. Cobró importancia en procesos de desarrollo como XP (eXtreme Programming) que requiere de la reestructuración de modelos y código existentes a partir de pasos pequeños y sistemáticos (Beck, 2000). También es fundamental en el contexto de técnicas de ingeniería reversa de sistemas legacy. Algunas herramientas CASE UML proveen facilidades, si bien limitadas, para el refactoring sobre código, es decir ligado a la sintaxis de un lenguaje de programación en particular. Actualmente OMG (Object Management Group) promueve desarrollos de software basados en UML (OMG, 2004) a partir de una arquitectura Model Driven (MDA, 2004). MDA define un framework para modelar que separa la especificación de la funcionalidad del sistema de su implementación sobre una plataforma en una tecnología específica. La idea clave es la automatización de transformaciones de modelo-a-modelo. En este contexto se vuelven esenciales las técnicas de refactoring para mejorar los modelos de los distintos niveles de abstracción de un diseño. En esta investigación se propone el refactoring de diagramas de clases UML enriquecidos con expresiones OCL (Warmer y Kepple, 2003) a partir de un sistema transformacional basado en reglas y estrategias. El objetivo de este sistema transformacional es proveer asistencia para los refactorings de modelo-a-modelo mediante la aplicación de reglas de transformación que preservan la funcionalidad del modelo original. Las transiciones entre versiones se realizan de acuerdo a reglas precisas basadas en la redistribución de clases, atributos, operaciones y asociaciones del diagrama. Durante el proceso de transformación, se necesitan estrategias para guiar la aplicación de las reglas de transformación que permiten construir un nuevo diagrama UML. Se describen en la sección 2 los trabajos relacionados. La sección 3 presenta el sistema de transformación y un conjunto de reglas y estrategias para reestructurar clases y asociaciones. Finalmente la sección 4 concluye y discute futuros trabajos

    Una integración de patrones de diseño en procesos de ingeniería forward de modelos estáticos UML

    Get PDF
    Los patrones de diseño describen soluciones a problemas de diseño recurrentes. Si bien no hay consenso sobre la forma de integrar patrones de diseño en el desarrollo de software (usando por ejemplo herramientas o lenguajes), si lo hay en cuanto a que la tarea debería ser automatizada o al menos asistida. La experiencia industrial (Beck, 1996) indica que los patrones de diseño reducen los tiempos de desarrollo, facilitan la comunicación, pero su aplicación manual es tediosa, propensa a errores y a pérdida de traceability. La importancia del diseño de software a partir de patrones de diseño es ampliamente reconocida. Varios IDEs (Integrated Development Environments) y ambientes de modelado de software basados en UML (OMG, 2004) han comenzado a introducir soporte para patrones de diseño aunque las herramientas comerciales existentes proveen limitada asistencia para la generación de código a partir de los mismos. La mayoría simplemente asiste en un proceso “cortar y pegar”, en el cual el diseñador selecciona un patrón y obtiene una pieza de código en el lenguaje apropiado. El programador necesita luego ajustar el código obtenido a la implementación (Peckham y Lloyd, 2003). En general, las técnicas empleadas no son independientes del lenguaje y son incapaces de generar código en más de un lenguaje. Estas propuestas asumen que los patrones de diseño involucran clases dedicadas a su rol como el de colaborador dentro de un patrón de diseño particular. En general esto no es verdad, los patrones raramente existen en forma aislada. Con frecuencia un colaborador en un patrón juega un rol diferente en otro. La definición de patrón pone el énfasis en esto: un patrón es "una solución a un problema en un contexto particular" (Gamma y otros,1995). Es más, un patrón es implementado generando no sólo nuevas clases y métodos, sino adaptando el contexto existente, es decir, las construcciones de código preexistentes, a los roles que asumen en el nuevo patrón aplicado (Eden y otros, 1997).Eje: Ingeniería de SoftwareRed de Universidades con Carreras en Informática (RedUNCI
    corecore